/**
 * Created by yangfan on 2017/1/5.
 */
define(["config/appregister","business/services/uEditorService"],function(app){
    app.directive('uEditor',function($http,Common,$rootScope) {
                return {
                    restrict: 'EA',
                    scope:{
                      content:"=setModel"
                    },
                    //templateUrl:"app/business/services/comComponents/uEditor.html",
                    //require: 'ngModel',
                    link: function (scope, ele, attrs) {
                     //   $rootScope.$emit('loading', '初始化编辑器...');//广播loading事件，可以删除

                        var _self = this,
                            _initContent,
                            editor,
                            editorReady = false,
                            base = 'http://192.168.0.19:8080/ueditor', //ueditor目录
                           // base = 'http://localhost:8080/utf8-jsp', //ueditor目录
                            _id = attrs.ueditor;
                        var editorHandler = {
                            init: function () {
                                window.UEDITOR_HOME_URL = base + '/';
                                var _self = this;
                                if (typeof UE != 'undefined') {
                                    //editor = UE.getEditor(_id, {
                                    //    toolbars: [
                                    //        [
                                    //            'fontsize', '|',
                                    //            'blockquote', 'horizontal', '|',
                                    //            'removeformat', '|',
                                    //            'insertimage', '|',
                                    //            'bold', 'italic', 'underline', 'forecolor', 'backcolor', '|',
                                    //            'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify',
                                    //            'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
                                    //            'insertorderedlist', 'insertunorderedlist', '|',
                                    //            'link', 'unlink', '|',
                                    //            'emotion'
                                    //        ]
                                    //    ]
                                    //});
                                    editor = UE.getEditor('editor');
                                    editor.ready(function () {
                                        editor.setHeight(500);
                                        editorReady = true;
                                        $rootScope.$emit('loading', '');//编辑器初始化完成
                                        editor.addListener('contentChange', function () {//双向绑定
                                            if (!scope.$$phase) {
                                                scope.$apply(function () {
                                                    scope.content = editor.getContent();
                                                 //   ctrl.$setViewValue(editor.getContent());
                                                });
                                            }
                                        });
                                    });
                                }
                                else {
                                 //   Common.loadScript(base + '/third-party/zeroclipboard/ZeroClipboard.js', null);
                                    Common.loadScript(base + '/ueditor.config.js', null);
                                    Common.loadScript(base + '/ueditor.all.js', function () {
                                        _self.init();
                                    });
                                }
                            },
                            setContent: function (content) {
                                if (editor && editorReady) {
                                    editor.setContent(content);
                                }
                            }
                        };
                        //初始化设置
                        if(typeof scope.content!="undefined"){
                            if (editor && editorReady) {
                                editor.setContent(content);
                            }else{
                                setTimeout(function(){
                                   if(!editor || !editorReady){
                                       setTimeout(arguments.callee,200)
                                   }else {
                                       editor.setContent(scope.content);
                                   }
                                },200)
                            }

                        }
                        //ctrl.$render = function () {
                        //    _initContent = ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue;
                        //    editorHandler.setContent(_initContent);//双向绑定
                        //};
                        editorHandler.init();
                   //     ctrl.$render();
                        //事件
                        $rootScope.$on('$routeChangeStart', function () {
                            editor && editor.destroy();
                        });
                    }
                }
    })

});

//scope.conf = {
//    "width":"1200px",
//    "height":"800px"
//};
//scope.frameStyle = scope.conf ;
//scope.getContent = function(){
//    getContent();
//};



//实例化编辑器
//建议使用工厂方法getEditor创建和引用编辑器实例，如果在某个闭包下引用该编辑器，直接调用UE.getEditor('editor')就能拿到相关的实例
//var ue = UE.getEditor('editor');
//
//
//function isFocus(e){
//    alert(UE.getEditor('editor').isFocus());
//    UE.dom.domUtils.preventDefault(e)
//}
//function setblur(e){
//    UE.getEditor('editor').blur();
//    UE.dom.domUtils.preventDefault(e)
//}
//function insertHtml() {
//    var value = prompt('插入html代码', '');
//    UE.getEditor('editor').execCommand('insertHtml', value)
//}
//function createEditor() {
//    enableBtn();
//    UE.getEditor('editor');
//}
//function getAllHtml() {
//    alert(UE.getEditor('editor').getAllHtml())
//}
//function getContent() {
//    var arr = [];
//    arr.push("使用editor.getContent()方法可以获得编辑器的内容");
//    arr.push("内容为：");
//    arr.push(UE.getEditor('editor').getContent());
//    return arr.join("\n");
//}
//function getPlainTxt() {
//    var arr = [];
//    arr.push("使用editor.getPlainTxt()方法可以获得编辑器的带格式的纯文本内容");
//    arr.push("内容为：");
//    arr.push(UE.getEditor('editor').getPlainTxt());
//    alert(arr.join('\n'))
//}
//function setContent(isAppendTo) {
//    var arr = [];
//    arr.push("使用editor.setContent('欢迎使用ueditor')方法可以设置编辑器的内容");
//    UE.getEditor('editor').setContent('欢迎使用ueditor', isAppendTo);
//    alert(arr.join("\n"));
//}
//function setDisabled() {
//    UE.getEditor('editor').setDisabled('fullscreen');
//    disableBtn("enable");
//}
//
//function setEnabled() {
//    UE.getEditor('editor').setEnabled();
//    enableBtn();
//}
//
//function getText() {
//    //当你点击按钮时编辑区域已经失去了焦点，如果直接用getText将不会得到内容，所以要在选回来，然后取得内容
//    var range = UE.getEditor('editor').selection.getRange();
//    range.select();
//    var txt = UE.getEditor('editor').selection.getText();
//    alert(txt)
//}
//
//function getContentTxt() {
//    var arr = [];
//    arr.push("使用editor.getContentTxt()方法可以获得编辑器的纯文本内容");
//    arr.push("编辑器的纯文本内容为：");
//    arr.push(UE.getEditor('editor').getContentTxt());
//    alert(arr.join("\n"));
//}
//function hasContent() {
//    var arr = [];
//    arr.push("使用editor.hasContents()方法判断编辑器里是否有内容");
//    arr.push("判断结果为：");
//    arr.push(UE.getEditor('editor').hasContents());
//    alert(arr.join("\n"));
//}
//function setFocus() {
//    UE.getEditor('editor').focus();
//}
//function deleteEditor() {
//    disableBtn();
//    UE.getEditor('editor').destroy();
//}
//function disableBtn(str) {
//    var div = document.getElementById('btns');
//    var btns = UE.dom.domUtils.getElementsByTagName(div, "button");
//    for (var i = 0, btn; btn = btns[i++];) {
//        if (btn.id == str) {
//            UE.dom.domUtils.removeAttributes(btn, ["disabled"]);
//        } else {
//            btn.setAttribute("disabled", "true");
//        }
//    }
//}
//function enableBtn() {
//    var div = document.getElementById('btns');
//    var btns = UE.dom.domUtils.getElementsByTagName(div, "button");
//    for (var i = 0, btn; btn = btns[i++];) {
//        UE.dom.domUtils.removeAttributes(btn, ["disabled"]);
//    }
//}
//
//function getLocalData () {
//    alert(UE.getEditor('editor').execCommand( "getlocaldata" ));
//}
//
//function clearLocalData () {
//    UE.getEditor('editor').execCommand( "clearlocaldata" );
//    alert("已清空草稿箱")
//}